package main

import (
	"fmt"
)

func main() {
	/*
		channel 中的数据的读出的顺序是不变的，先进先出。
		但是 select 中，case语句中的执行顺序是不一定的
	*/
	c1 := make(chan int, 10)
	c2 := make(chan int, 10)
	c3 := make(chan int, 10)
	c4 := make(chan int, 10)
	c5 := make(chan int, 10)
	c6 := make(chan int, 10)
	c7 := make(chan int, 10)
	c1 <- 1
	c2 <- 2
	c3 <- 3
	c4 <- 4
	c5 <- 5
	c6 <- 6
	c7 <- 7
	c1 <- 1
	c2 <- 2
	c3 <- 3
	c4 <- 4
	c5 <- 5
	c6 <- 6
	c7 <- 7

	select {
	case <-c1:
		fmt.Println(<-c1)
	case <-c2:
		fmt.Println(<-c2)
	case <-c3:
		fmt.Println(<-c3)
	case <-c4:
		fmt.Println(<-c4)
	case <-c5:
		fmt.Println(<-c5)
	case <-c6:
		fmt.Println(<-c6)
	case <-c7:
		fmt.Println(<-c7)
	}
	/*结果：
	1,2,3,4,5,6,7 任意一个数，每次输出的结果都不一定
	*/
}
